package com.iwhalecloud.citybrain.flow.platform.manager.domain.repository;

import java.util.List;

import com.iwhalecloud.citybrain.flow.platform.manager.domain.model.FlowRuTimeoutSettingVo;
import com.iwhalecloud.citybrain.flow.platform.manager.domain.model.notice.FlowReNoticeInfo;
import com.iwhalecloud.citybrain.flow.platform.manager.domain.model.notice.NoticeInfo;

/**
 * @author lilh
 * @date 2019-07-11 16:33
 */
public interface FlowRuTimeoutSettingRepository {

    /**
     * 新增
     *
     * @param entity 实体
     * @return 记录数
     */
    int insertFlowRuTimeoutSetting(FlowRuTimeoutSettingVo entity);


    /**
     * 列表
     */
    List<FlowRuTimeoutSettingVo> listFlowRuTimeoutSetting(String taskId);

    List<FlowRuTimeoutSettingVo> listFlowRuTimeoutSetting(String processInstanceId, String nodeCode, String noticeType);


    /**
     * 更新
     *
     * @param entity 实体
     * @return 记录数
     */
    int updateFlowRuTimeoutSetting(FlowRuTimeoutSettingVo entity);

    /**
     * 查询任务处理通知列表
     *
     * @param procInstId
     * @param activityId
     * @return
     */
    List<NoticeInfo> listTaskHandleNotice(String procInstId, String activityId);

    /**
     * 查询需要进行通知的超时和预警通知
     *
     * @return
     */
    List<FlowReNoticeInfo> listNeedNotifyTimeoutAndWarningNotice(String procId);

    /**
     * 查询需要进行通知的超时和预警通知通过ID
     *
     * @return
     */
    FlowReNoticeInfo getNeedNotifyTimeoutAndWarningNoticeById(Long id);
}
